export default {
  // 是否作为局部
  namespaced:true,
  state:()=>({
    // 获取购物车的信息 (获取session里面的数据)
    cart:JSON.parse(uni.getStorageSync('cart') || '[]')
  }),
  mutations:{
    // 购物结束后 删除付款完毕的购物车
    undateC(state,goods){
      state.cart = goods
    //本地存储
      this.commit('m_cart/saveGoods')      
    },
    // 删除商品的操作(filter过滤要删除内容的id)
    undateRemoveGoods(state,goods){
      //通过筛选filter 筛选出不符合的内容(!==) 把符合的内容储存起来
      const arr = state.cart.filter(e => e.goods_id !== goods.goods_id)
      // 把筛选结果储存
      state.cart = arr
      // 把数据储存在本地中
      this.commit('m_cart/saveGoods')      
    },
    // 更新商品的数量
    updateGoodsNumber(state,goods){
      // 找到当前需要改变的状态商品
        const findRes = state.cart.find((e)=>e.goods_id === goods.goods_id )
      //判断是否找到了对象
      			if(findRes) {
      				//如果找到了，让商品勾选状态位取反
      				findRes.goods_count = goods.goods_count
      			}
         // 把数据储存在本地中
         this.commit('m_cart/saveGoods')            
    },
    // 更新商品选中的状态位
    updateGoodsState(state,goods){
    // 找到当前需要改变的状态商品
      const findRes = state.cart.find((e)=>e.goods_id === goods.goods_id )
		//判断是否找到了对象
      			if(findRes) {
      				//如果找到了，让商品勾选状态位取反
      				findRes.goods_state = !findRes.goods_state
      			}
         // 把数据储存在本地中
         this.commit('m_cart/saveGoods')      
    },
    // 把购物车信息 储存到state中
    updateCart(state,goods){
      //在数组中查找是否已经有goods对象
      const findRes = state.cart.find((e)=>e.goods_id === goods.goods_id )
      		//判断是否找到了对象
      			if(findRes) {
      				//如果找到了，就让商品的数量加一
      				findRes.goods_count++
      			} else {
      				//如果没找到就将商品数据添加到cart数组
      				state.cart.push(goods)
         }
         // 把数据储存在本地中
         this.commit('m_cart/saveGoods')
    },
    // 设置一个Vuex的本地储存(session临时储存)
    saveGoods(state){
      uni.setStorageSync('cart',JSON.stringify(state.cart))
    },
    // 修改全部商品的goods_state 选中状态位(全选)
    unpdateAllState(state,isChecked){
      state.cart.forEach(e =>{
        e.goods_state = isChecked
      })
    // 把数据储存在本地中
      this.commit('m_cart/saveGoods')
    }
  },
  getters:{
    // 计算勾选商品的价格
    allPrice(state){
      let sum = 0
      state.cart.forEach( e =>{
        if(e.goods_state){
          sum += (e.goods_count * e.goods_price)
        }
      })
      return sum
    },
    // 计算勾选商品的数量
    checkedCount(state){
      let count = 0
      state.cart.forEach(e =>{
        if(e.goods_state){
          count += e.goods_count
        }
      })
      return count
    },
    // 计算购物车总数
    total(state){
      // 定义默认0
      let count = 0
      // 计算购物车总共有多少商品
      // 通过foreach循环计算
      state.cart.forEach((e,i) =>{
        count += e.goods_count
      })
      // 返回计算数据
      return count
    }
  }
}